; PMODE 4 LIBRARY BY SHELDON MACDONALD
; nov 21,2021
; VR 0.1
;
; *************************************************************************************************************************
; * sync pmode 1     128x64x4 colors
; * sync4(buff,colorset) 0-3    up to 2 screens   2 color mode colorset 240,248 valid
; *************************************************************************************************************************
FUNCTION	SYNC4	BUFFER,COLSET
REM	; sync4( screen,colorset ) mem usage 3584, 9728
REM	; colorset can be 240,248 only. ( pmode 4) each screen is 6144 bytes 256x192 x 2color
DEF	BUFFER	BYTE
DEF	COLSET	BYTE
BUFFER	FCB	0
COLSET	FCB	0
; if its 0 then its 3584
; if its 1 then its 9728
; res =256x192   =6144bytes
SYNC4	CLRA
SYNCS	LDA	$FF03
	BPL	SYNCS	;dunno if sync needed
	LDA	$FF02
	LDA	BUFFER
	BEQ	SCREEN0
	CMPA	#1
	BEQ	SCREEN1
	RTS	;bad command
SCREEN0	CLRA	; set ram start 7 3584
	LDX	#65478
	STA	1,X
	STA	3,X
	STA	5,X
	STA	6,X
	STA	8,X
	STA	10,X
	STA	12,X
; vdg pattern
	LDX	#65472
	STA	1,X
	STA	3,X
	STA	4,X
	LBRA	CHANGE
SCREEN1	CLRA	; set ram start 19 9728
	LDX	#65478
	STA	1,X
	STA	3,X
	STA	4,X
	STA	6,X
	STA	9,X
	STA	10,X
	STA	12,X
; vdg pattern
	LDX	#65472
	STA	1,X
	STA	3,X
	STA	4,X
CHANGE	LDA	COLSET
	STA	$FF22
FINISH	RTS
ENDFUNCTION
;
; ***********************************************************************************************************************
; * cls4( screen, color)
; ***********************************************************************************************************************
FUNCTION	CLS4	BUFFER,COLOR
REM	; cls4( screen, color)  screen 0-1 color is 0-1
REM	; pmode4  256x192 x 2 color
DEF	BUFFER	BYTE
DEF	COLOR	BYTE
COLOR	FCB	0,0
BUFFER	FCB	0
CLSEND	FCB	0,0
CLSSTART	FCB	0,0
CLTABLE	FCB	0,255
CLS4	LDA	BUFFER
	BEQ	CLS0
	CMPA	#1
	BEQ	CLS3
	RTS	;bad command
CLS0	LDX	#3584
	LDD	#9728
	BRA	STARTCLS
CLS3	LDX	#9728
	LDD	#15872
STARTCLS	STD	CLSEND
	LDA	COLOR
	CMPA	#2
	BLO	CONTCC
	LDA	#1
	STA	COLOR
CONTCC	LDY	#CLTABLE
	LDB	A,Y
	STB	COLOR
	LDA	COLOR
	STD	COLOR
	LDU	CLSEND
	STX	CLSSTART
	LDX	COLOR
	LDY	COLOR
CLSPM3_1	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	X,Y,D
	PSHU	D
	CMPU	CLSSTART
	BHI	CLSPM3_1
	RTS
ENDFUNCTION
; 
;
